﻿

$("#CancelId").click(function ()//点击“取消”按钮时返回试卷列表
{
    window.location.href = "/TeacherManger/TestLibExamView/"
});





var paperId = 0;//paperID记录
var gdViewModel;
var StrategyList = [];  //定义一个策略对象数组

$(function () {


    function gridViewModel() {
        var self = this;


        self.recordSet = ko.observableArray(); //选项数据集

        self.headers = ko.observableArray(
             [

{ displayText: '标题', value: 'STitle', width: 'auto' },
 { displayText: '题目类型', value: 'IProblemType', width: 'auto' },
 { displayText: '大题分数', value: 'IScore', width: 'auto' },
 { displayText: '小题数量', value: 'INum', width: 'auto' },


             ]
            );



        //节点数据
        self.NodeValue = ko.observable({
            Id: '',
            STestName: '',
            ICourseId: '',
            SCouseCode: '',
            ITeaId: '',
            STeaCode: '',
            ITermId: '',
            DCreateTime: new Date(),  //设置试卷的创建时间为系统的当前时间
            SIp: '',
            IOverTime: '',
            ITestType: 1,
            ITotal: '',
            IIsOk: '',
            DTestTime: '',
            IDiff: '',
            IHardlevel: '',
            IKsType: '',
            STeaName: '',
            IAddBracket: 1

        }),

        //初始化
        self.init = function () {


        }
        self.initEd = function () {//结束初始化
        }



        //初始查询
        self.search = function () {

            $.ajax(
            {

                url: '/api/TestLibPaperExt/StratgeTemplate/',
                type: "get",


                success: function (result) {
                    self.recordSet(result);//收集返回的组题策略集
                    StrategyList = result;

                    $(".STitle").editable();    //策略标题
                    $(".IProblemType").editable({  //策略题型
                        source: [{ value: 1, text: '单项选择题' }, { value: 2, text: '多项选择题' }, { value: 3, text: '判断题' }]
                        , success: function (response, newValue) {
                            gdViewModel.search();
                        }
                    });
                    $(".IScore").editable({
                        success: function (response, newValue) {
                            gdViewModel.search();
                        }
                    });  //该策略的总分
                    $(".INum").editable();  //该策略的小题数量

                    $(".IAddBracket").editable({  //是否加括号
                        source: [{ value: 1, text: '是' }, { value: 0, text: '否' }]
                         , success: function (response, newValue) {
                             gdViewModel.search();
                         }
                    });

                }
            });
        };


        //TO Add Method
        //是否加括号
        self.formatBracket = function (value) {
            switch (value) {
                case 1:
                    return "是"
                    break;
                case 0:
                    return "否"
                    break;
            }
        }

        //转换题型为对应的字符串
        self.formatIProblemType = function (value) {
            switch (value) {
                case 1:
                    return "单项选择题"
                    break;
                case 2:
                    return "多项选择题"
                    break;
                case 3:
                    return "判断题"
                    break;
                default:
                    break;
            }
        }


        //此处有一个bug
        //取页面上的数据项  
        self.CommonData = function () {
            /*--获取所有试题共同部分*/
            self.NodeValue().STestName = $("#txtbSTestName").val();//从标题编辑栏里面获取值

            var IHardLevel = $('input:radio[name="stars-rating"]:checked').val();//获取难易度rating
            var IDiffLevel = $('input:radio[name="rating"]:checked').val();//获取区分度

            self.NodeValue().ICourseId = $("#HiddenCourseID").val();  //获取所属的课程


            //获取试题的难易度
            if (typeof (IHardLevel) != "undefined" && IHardLevel != null) {

                self.NodeValue().IHardlevel = IHardLevel;//获取难易度
            }
            else {
                self.NodeValue().IHardLevel = 0;
            }
            //获取试题的区分度
            if (typeof (IDiffLevel) != "undefined" && IDiffLevel != null) {

                self.NodeValue().IDiff = IDiffLevel;//区分度
            }
            else {
                self.NodeValue().IDiff = 0;
            }
            self.NodeValue().IOverTime = $("#subjecttime").val();  //获取测试的总时间

            //获取试卷的总分
            self.NodeValue().ITotal = $("#subject").val();

            //获取考核方式
            self.NodeValue().ITestType = $("#txtbITestType").val();
            //获取考试方式
            self.NodeValue().IKsType = $("#txtbIKsType").val();

        }

        self.ValidateFun = function ()
        {
            var IHardLevel = $('input:radio[name="stars-rating"]:checked').val();//获取难易度rating
            var IDiffLevel = $('input:radio[name="rating"]:checked').val();//获取区分度
            if(IHardLevel==null||IHardLevel=="")
            {
                return 0;
            }
            if(IDiffLevel==null||IDiffLevel=="")
            {
                return 1;
            }
            return 2;//正常的情况下
        }

        //点击“下一步”按钮执行的操作,向数据库插入基本试卷信息或者更新试卷的基本信息  add 9.13下午
        self.DefaultAddPaper = function () {
            var getN=self.ValidateFun();
            if (getN == 0)
            {
                alert("难度系数为必填项，请填写后再点击下一步");
                return false;
            }
            else if (getN == 1)
            {
                alert("区分度系数为必填项，请填写后再点击下一步");
                return false;
            }
           
            self.CommonData();  //获取页面上的数据


            var URL;  //定义一个URL变量
            if (self.NodeValue().Id != 0) {  //更新试卷信息
                URL = "/api/TestLibPaperExt/GenUpdatePaper/"
            }
            else   //新建试卷的基本信息
            {
                URL = "/api/TestLibPaperExt/GenNewPaper/"
            }

            if (!self.STestNameValidate()) {  //标题设置非法
                return false;
            }
            else  //标题设置合法，向数据库插入基本试卷信息
            {
                $.ajax({

                    url: URL,
                    type: "POST"
                     , contentType: "application/json; charset=utf-8"
                     , data: JSON.stringify(self.NodeValue())
                    , success: function (result) {
                        paperId = result.Id;//by lzq 取paperID
                        self.NodeValue(result);
                        self.ShowOrHide();//调整显示界面
                        self.search();
                    }
                })
            }


        }

        //点击“确定”按钮执行的操作
        //1.验证策略题型设置是否重复 
        self.SubmitModel = function () {
            if (!self.TotalValidate())  //验证策略的分值总和是否与本试卷的总分匹配
            {
                alert("策略总分与试卷总分不匹配，请从新分配！");
                return false;
            }
            else if (!self.StrategyIProblemTypeValidate())   //验证所有策略的题型是否有重复
            {
                alert("题型有重复！");
                return false;
            }
            else {
                //此处还有事件没有处理，调用算法执行从题库中筛选试题等
                //选题 by lzq 10.10

                $.ajax({
                    url: "/api/TestLibPaperExt/CreatePaper?paperId=" + paperId,
                    type: "POST",
                }).done(function (data) {
                    if (data == -1) {
                        alert("组卷完成");
                        window.location.href = "/TeacherManger/TestLibExamView?CourseID=" + $("#HiddenCourseID").val();
                    }
                    else if (data == 1) {
                        alert("题库中，该门课程单选题数量不够");
                    }
                    else if (data == 2) {
                        alert("题库中，该门课程多选题数量不够");
                    }
                    else if (data == 3) {
                        alert("题库中，该门课程判断题数量不够");
                    }

                })
                //选题End
            }

        }

        //验证策略题型设置是否重复
        self.StrategyIProblemTypeValidate = function () {
            var bol; //作为函数的返回值
            var ary = new Array();
            for (var i = 0; i < StrategyList.length; i++) {
                ary[i] = StrategyList[i].IProblemType;
            }
            var nary = ary.sort();   //把所有的题型利用sort函数排序
            for (var i = 0; i < nary.length - 1; i++) {
                if (nary[i] == nary[i + 1]) { //题型存在重复
                    bol = false;   //返回false
                    return;
                }
                else {
                    bol = true;  //返回true
                }
            }
            return bol;  //返回函数的结果

        }

        //验证策略大题分数总和是否与试卷总分匹配
        self.TotalValidate = function () {
            var totalScore = 0; //保存所有策越的大题总分
            for (var i = 0; i < StrategyList.length; i++) {
                totalScore = totalScore + StrategyList[i].IScore;
            }
            if (totalScore != self.NodeValue().ITotal) {
                return false;
            }
            else {
                return true;
            }
        }


        //1.试卷基本信息页面隐藏，2组卷策略页面显示，3“下一步”“取消”按钮隐藏，4“上一步”“确定”显示
        self.ShowOrHide = function () {
            $("#SecondStep").show(); //组卷策略页面显示
            $("#stratgeinfo").show();  //提示信息显示，add by yzp 11.15
            $("#FirstStep").hide();//试卷基本信息页面隐藏

            $("#SubmitId").show(); //“确定”按钮显示
            $("#PreId").show();//“上一步”按钮显示

            $("#NextId").hide(); //“下一步”按钮隐藏
            $("#CancelId").hide(); //“取消”按钮隐藏
        }

        //点击“上一步”执行的操作

        self.PreStep = function () {
            $("#SecondStep").hide(); //组卷策略页面隐藏
            $("#stratgeinfo").hide();  //提示信息显示，add by yzp 11.15
            $("#FirstStep").show();//试卷基本信息页面显示

            $("#SubmitId").hide(); //“确定”按钮隐藏
            $("#PreId").hide();//“上一步”按钮隐藏

            $("#NextId").show(); //“下一步”按钮显示
            $("#CancelId").show(); //“取消”按钮显示
        }



        //点击“取消”执行的操作  添加于10.10日晚
        self.CancelStep = function () {

            window.location.href = "/TeacherManger/TestLibExamView?CourseID=" + $("#HiddenCourseID").val();
        }

        //点击“新增策略”按钮执行新增策略操作
        self.AddStratgeButton = function () {
            $.ajax({
                url: "/api/TestLibPaperExt/AddStrategy/",
                type: "POST",
                success: function () {
                    self.search();


                }
            })
        }





        //删除选中的策略 
        self.DeleteStrategy = function (currentStrategy) {

            var StrategyID = currentStrategy.Id;

            if (StrategyID != null && typeof (StrategyID) != "undefined" && StrategyID != "") {
                $.ajax({
                    url: '/api/TestLibPaperExt/DeleteStrategy?id=' + StrategyID,
                    type: "POST",
                    success: function () {
                        alert("删除策略成功！");
                        self.search();
                    }
                })
            }

        }


        //验证试卷基本信息是否合法 
        //1.试卷名称不能为空且长度不能超过200字节（100汉字）
        self.STestNameValidate = function () {
            if ($("#txtbSTestName").val() == "" || typeof ($("#txtbSTestName").val()) == 'undefined' || $("#txtbSTestName").val().length > 200) {
                alert("出错了，试卷名填写有误，请重新填写");
                return 0;
            }
            else
                return 1;

        }


    }


    var gdViewModel = new gridViewModel();



    gdViewModel.init();
    ko.applyBindings(gdViewModel);





});
